package cn.vire.electric.simulation.config.aspect;

import java.lang.annotation.*;

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AuditLogPointcut {
    /**
     * 事件类型 字符串,不做解析
     * @return
     */
    String eventType();

    /**
     * 事件描述 spel表达式
     * @return
     */
    String[] desc();

    /**
     * 批量的,默认false
     * 为true时使用集合collection接收,注意表达式返回的应该是集合
     * example:
     * 表达式:  String el = "#args.![#this + '个']";
     *  args:  ArrayList<Long> arglist = new ArrayList<>();
     *         arglist.add((long) 1);
     *         arglist.add((long) 2);
                ...
     * @return
     */
    boolean multi() default false;

    /**
     * 是否方法执行前解析desc表达式,默认false
     * 为true时,先记录日志.后执行方法,主要用户删除等操作,方法执行完后无法获取到数据
     * @return
     */
    boolean preParseDesc() default false;
}
